// 验证是否手机号
function isvalidPhone(str) {
  const reg = /^1[3|4|5|6|7|8|9][0-9]\d{8}$/
  return reg.test(str)
}

// 用于element-ui中表单中判断手机号格式是否正确
var validPhone = (rule, value, callback) => {
  if(value == undefined || value == null || value == ''){
    if(rule.required){
      callback(new Error('电话号码不能为空'))
    } else {
      callback()
    }
  } else {
    if(!isvalidPhone(value)){
      callback(new Error('请输入正确的11位手机号码'))
    } else {
      callback()
    }
  }  
}

// 判断身份证格式是否正确
function isvalidIdCard(id) {
  // 1 "验证通过!", 0 //校验不通过
  var format = /^(([1][1-5])|([2][1-3])|([3][1-7])|([4][1-6])|([5][0-4])|([6][1-5])|([7][1])|([8][1-2]))\d{4}(([1][9]\d{2})|([2]\d{3}))(([0][1-9])|([1][0-2]))(([0][1-9])|([1-2][0-9])|([3][0-1]))\d{3}[0-9xX]$/;
  //号码规则校验
  if (!format.test(id)) {
    //alert("身份证号码不合规，请核对您的身份证号。");
    return false;
  }
  //区位码校验
  //出生年月日校验   前正则限制起始年份为1900;
  var year = id.substr(6, 4),//身份证年
    month = id.substr(10, 2),//身份证月
    date = id.substr(12, 2),//身份证日
    time = Date.parse(month + '-' + date + '-' + year),//身份证日期时间戳date
    now_time = Date.parse(new Date()),//当前时间戳
    dates = (new Date(year, month, 0)).getDate();//身份证当月天数
  if (time > now_time || date > dates) {
    //alert("身份证出生日期不合规，请核对您的身份证号。");
    return false;
  }
  //校验码判断
  var c = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);   //系数
  var b = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');  //校验码对照表
  var id_array = id.split("");
  var sum = 0;
  for (var k = 0; k < 17; k++) {
    sum += parseInt(id_array[k]) * parseInt(c[k]);
  }
  if (id_array[17].toUpperCase() != b[sum % 11].toUpperCase()) {
    //alert('身份证校验码不合规，请核对您的身份证号。');
    return false;
  }
  return true;
}

// 用于element-ui中表单中判断身份证号格式是否正确
var validIdCard = (rule, value, callback) => {
  console.log(rule);
  console.log(value);
  if(value == undefined || value == null || value == ''){
    if(rule.required){
      callback(new Error('身份证号不能为空'))
    } else {
      callback()
    }
  } else {
    if(!isvalidIdCard(value)){
      callback(new Error('身份证号码格式有误'))
    } else {
      callback()
    }
  } 
}

// 验证是否Email地址
function isvalidEmail(str) {
  const reg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/
  return reg.test(str)
}

// 用于element-ui中表单中判断手机号格式是否正确
var validEmail = (rule, value, callback) => {
  if(value == undefined || value == null || value == ''){
    if(rule.required){
      callback(new Error('Email地址不能为空'))
    } else {
      callback()
    }
  } else {
    if(!isvalidEmail(value)){
      callback(new Error('请输入正确的Email地址'))
    } else {
      callback()
    }
  }  
}

// 用于element-ui中表单中验证数字(整数)格式是否正确
var validInteger = (rule, value, callback) => {
  if(value == undefined || value == null || value == ''){
    if(rule.required){
      callback(new Error('该值不能为空'))
    } else {
      callback()
    }
  } else {
    let reg = /^[1-9]+[0-9]*]*$/;
    if(reg.test(value)){
      let v = Number(value);
      if(rule.min && v < rule.min){
        callback(new Error('该值必须大于等于 ' + rule.min))
      } else if(rule.max && v > rule.max){
        callback(new Error('该值必须小于等于 ' + rule.max))
      } else {
        callback()
      }
    } else {
      callback(new Error('该值只能为数字'))
    } 
  }  
}

// 判断是否日期（yyyy-MM-dd）
function isvalidDate(value){
  if(value == undefined || value == null || value == ''){
    return false;
  } else if(value.length == 10) {
    return !isNaN(Date.parse(value));
  } else {
    return false;
  }
}

// 用于element-ui中表单中判断日期格式是否正确
var validDate = (rule, value, callback) => {
  if(value == undefined || value == null || value == ''){
    if(rule.required){
      callback(new Error('日期不能为空'))
    } else {
      callback()
    }
  } else {
    if(!isvalidDate(value)){
      callback(new Error('请输入正确的日期（yyyy-MM-dd）'))
    } else {
      callback()
    }
  }
}


// 判断是否是中文
function isvalidChs(str){
  if(str == undefined || str == null || str == ''){
    return false;
  } else {
    var reg = /^[\u4e00-\u9fa5]+$/i;
    return reg.test(str)
  }
}